Many digital signal processing (DSP) functions, such as those found within communication systems, require the generation of a high-quality sinusoidal signal. A “high quality sinusoidal signal” or “high quality sinusoid,” as used herein, can refer to a sinusoidal signal that is spectrally pure, e.g., one with harmonics, or spurs, lower than a predetermined threshold with respect to the primary or carrier frequency. For example, a high quality sinusoid may have harmonic levels that are at least 60 dB below that of the primary frequency.
Examples of DSP functions that rely upon sinusoids can include, but are not limited to, discrete Fourier transform (DFT) functions, fast Fourier transform (FFT) functions, digital up converters, digital down converters, carrier recovery loops, and the like. Within digital up or digital down converters, for instance, the sinusoid is used as the local oscillator which drives the DSP function.
One technique for generating a high quality sinusoid involves storing sinusoid samples in a lookup table. A time-varying phase argument is generated using an overflow accumulator. The value obtained for the angle at a given point in time is used to index into the lookup table. Sample values can be read out of the lookup table according to the angle generated from the overflow accumulator over time to generate the sinusoid. A significant number of samples must be stored to generate a high quality sinusoid, e.g., one with low phase noise on the order of approximately greater than −120 dB. For example, in the typical case, the lookup table must be large enough to store several million samples. Storing such a large amount of data can be problematic for systems implemented within smaller devices, e.g., integrated circuits, where memory resources are limited.
Another technique for generating a high quality sinusoid is to utilize a recursive filter structure. While such structures do not require significant memory to store sinusoid samples, recursive filter structures suffer from stability issues. It is not theoretically possible to determine filter values, e.g. poles, which result in a stable system without an external amplitude stabilizing, (automatic gain control, AGC). AGC requires a high level of numerical accuracy which in real world systems is not easily accomplished.